import http from '@/utils/http';

/**
 * 用户管理相关API接口
 * 遵循RESTful设计规范，统一处理用户数据的CRUD操作
 * 使用http工具封装，便于统一处理请求/响应拦截、错误处理
 */
const allUserApi = {
  /**
   * 上传用户头像
   * @param userId 用户ID
   * @param file 文件对象
   * @returns 上传结果
   */
  uploadAvatar: (userId: number, file: File) => {
    const formData = new FormData();
    formData.append('file', file);

    return http.post(`/alluser/uploadAvatar/${userId}`, formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    });
  },

  /**
   * 获取用户信息
   * @param userId 用户ID
   * @returns 用户信息对象
   * 使用路径参数传递ID，符合RESTful设计中资源标识的最佳实践
   */
  getUserInfo: (userId: number) => {
    return http.get(`/alluser/get/${userId}`);
  },
  /**
   * 获取用户列表
   * @returns 用户列表数据
   * 不传递参数以获取全部用户，符合后端API设计习惯
   */
  getUserList: () => {
    return http.get('/alluser/list');
  },

  /**
   * 添加新用户
   * @param data 用户信息对象
   * @returns 添加结果
   * 使用POST方法符合RESTful规范中创建资源的要求
   */
  addUser: (data: any) => {
    return http.post('/alluser/add', data);
  },

  /**
   * 删除用户
   * @param userId 用户ID
   * @returns 删除结果
   * 使用路径参数传递ID，符合RESTful设计中资源标识的最佳实践
   */
  deleteUser: (userId: number) => {
    return http.delete(`/alluser/softDelete/${userId}`);
  },

  /**
   * 更新用户信息
   * @param data 更新后的用户信息
   * @returns 更新结果
   * 使用PUT方法表示完整更新资源，与PATCH区分开
   */
  updateUser: (data: any) => {
    return http.put('/alluser/update', data);
  },

  /**
   * 搜索用户
   * @param keyword 搜索关键词
   * @returns 匹配的用户列表
   * 使用GET方法并通过查询参数传递关键词，符合查询操作的HTTP语义
   */
  searchUsers: (keyword: string) => {
    return http.get('/alluser/search', { keyword });
  },
  /*
  * 获取所有学生
  * */
  getAllStudent: () => {
    return http.get('/alluser/getAllStudents');
  },

  /**
   * 获取菜单列表
   * @returns 菜单列表
   */
  getMenu: (data:any) => {
    return http.post('/menu/get',data);
  },
    /**
   * 获取路由列表
   * @returns 菜单列表
   */
  getRoute: (data:any) => {
    return http.post('/menu/route',data);
  },
};

export default allUserApi;